<template>
  <div class="count">
    <h2>当前求和为：{{ sum }},放大10倍：{{ bigSum }}</h2>
    <h3>
      欢迎带到 {{ school }},地址 {{ address }},大写：{{
        countStore.upperSchool
      }}
    </h3>
    <select v-model.number="n">
      <!-- 收集的值类型为数字 -->
      <option value="1">1</option>
      <option value="2">2</option>
      <option value="3">3</option>
    </select>
    <button @click="add">加</button>
    <button @click="minus">减</button>
    <button @click="changeSchool">修改学校和地址</button>
  </div>
</template>

<script setup lang="ts" name="Count">
import { ref } from "vue";

// 引入useCountStore
import { useCountStore } from "@/store/count";
import { storeToRefs } from "pinia";
// 调用useXxxxxStore得到对应的store
const countStore = useCountStore(); // 返回一个用reactive创建的响应式对象

// 将store中的数据进行解构并转换为ref对象,便于在模板中使用
const { sum, bigSum, school, address } = storeToRefs(countStore);
const { increment } = countStore; // 解构获取store中actions中的方法
// 数据
let n = ref(1); // 用户选择的数据(响应式)

// 方法
function add() {
  // 3.调用actions中的方法
  increment(n.value);
}
function minus() {
  // 1.直接修改store中的数据
  // sum.value -= n.value;
  countStore.sum -= n.value;
}
function changeSchool() {
  // 2.批量修改 使用$path()方法
  countStore.$patch({
    school: "商丘学院",
    address: "开封市",
  });
}
</script>

<style scoped>
.count {
  background-color: skyblue;
  padding: 10px;
  border-radius: 10px;
  box-shadow: 0 0 10px;
}
select,
button {
  margin: 0 5px;
  height: 25px;
}
</style>
